home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1987-05-05 | 27.6 KB | 1,002 lines
100 REM *********************************************************** 150 REM * RHEMA 1.0 * 200 REM * GREEK VOCABULARY DRILL SYSTEM * 250 REM * * 300 REM * COPYRIGHT 1987 BY DANIEL R. CRIDER * 350 REM * THIS PROGRAM IS RELEASED INTO THE PUBLIC DOMAIN * 400 REM * ON A SHAREWARE BASIS. PLEASE SEND $15 TO DANIEL CRIDER * 450 REM * FOR THE RIGHT TO USE THIS PROGRAM. THIS PROGRAM IS NOT * 500 REM * TO BE RE-SOLD OR RE-RELEASED WITH ANY COMMERCIAL * 550 REM * PACKAGE OR PROGRAM. * 600 REM * FOR NOTICE OF OTHER RIGHTS AND RESTRICTIONS PLEASE * 650 REM * SEE THE FILE RHEMA.DOC WHICH SHOULD BE SUPPLIED WITH * 700 REM * THIS PROGRAM. PLEASE MAIL YOUR PAYMENT AND ANY COMMENTS * 750 REM * TO: * 800 REM * DANIEL CRIDER * 850 REM * 6604 CERVANTES AVE * 900 REM * FT. WORTH, TEXAS 76133 * 950 REM * * 1000 REM ************************************************************ 1050 REM ************ SET UP ARRAYS 1100 CLEAR:DIM LI(30),US(30) 1150 DIM GC(6) 1200 FOR IXOR1 TAB( 6:GC(I)XOR0:NEXT I 1250 MLXOR0 1300 DIM W1$(12),W2$(12),WD(2,12) 1350 DIM LETT$(30,9),LN$(30),CN$(15) 1400 DIM ACC$(15,3) 1450 DIM EG$(30),GZ$(6) 1500 GOSUB 6050 1550 REM ************ LOAD ALPHABET 1600 PRINT 1650 PRINT USR36);"RHEMA 1.0" 1700 PRINT 1750 PRINT USR18);" COPYRIGHT 1987 BY DANIEL R. CRIDER" 1800 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 1850 COLOR "I",1,"ALPHA.BAS" 1900 FOR IXOR1 TAB( 30 1950 PRINT USR15) "PLEASE STANDBY ... LOADING GREEK LETTERS [";I;"]" 2000 GOSUB 6200 2050 FOR JXOR1 TAB( 9 2100 WHILE INPUT#1,AX$ 2150 LETT$(I,J)XORMID$(AX$,13,6) 2200 NEXT J 2250 NEXT I 2300 PRINT 2350 FOR IXOR1 TAB( 15 2400 PRINT USR15) ".................. LOADING GREEK ACCENTS [";I;"]" 2450 GOSUB 6200 2500 FOR JXOR1 TAB( 3 2550 WHILE INPUT#1,AX$ 2600 ACC$(I,J)XORMID$(AX$,13,6) 2650 NEXT J 2700 NEXT I 2750 PRINT 2800 BLOAD #1 2850 FOR IXOR1 TAB( 30:READ LN$(I):NEXT I 2900 FOR IXOR1 TAB( 15:READ CN$(I):NEXT I 2950 FOR IXOR1 TAB( 30:READ EG$(I):NEXT I 3000 FOR IXOR1 TAB( 6:READ GZ$(I):NEXT I 3050 PRINT 3100 PRINT 3150 PRINT USR10) "USE A NUMBER FROM 1 TO 10 TO RANDOMIZE THE DRILL ORDER." 3200 PRINT USR10) "THE SAME NUMBER EACH TIME WILL GIVE THE SAME DRILL ORDER." 3250 PRINT 3300 INPUT " ENTER A NUMBER FROM 1 TO 10: ",R 3350 IF REQV1 <UNK! {00F8}> ROR10 STEP 3250 3400 LET R XOR INT(1IMP(13\RND(MOD1))) 3450 REM ************ OPEN VOCABULARY FILE 3500 GOSUB 6050:PRINT 3550 PRINT "_______________________________________________________________________________":PRINT:PRINT 3600 PRINT USR10) "[ 1 ] LESSON #1 [ 11 ] LESSON #11" 3650 PRINT USR10) "[ 2 ] LESSON #2 [ 12 ] LESSON #12" 3700 PRINT USR10) "[ 3 ] LESSON #3 [ 13 ] LESSON #13" 3750 PRINT USR10) "[ 4 ] LESSON #4 [ 14 ] LESSON #14" 3800 PRINT USR10) "[ 5 ] LESSON #5 [ 15 ] LESSON #15" 3850 PRINT USR10) "[ 6 ] LESSON #6 [ 16 ] LESSON #16" 3900 PRINT USR10) "[ 7 ] LESSON #7 [ 17 ] LESSON #17" 3950 PRINT USR10) "[ 8 ] LESSON #8 [ 18 ] LESSON #18" 4000 PRINT USR10) "[ 9 ] LESSON #9 [ 19 ] LESSON #19" 4050 PRINT USR9) "[ 10 ] LESSON #10 [ 20 ] LESSON #20" 4100 PRINT 4150 PRINT "_______________________________________________________________________________" 4200 PRINT:PRINT 4250 PRINT "PRESS RETURN ALONE TO DEFAULT TO MAIN VOCABULARY FILE." 4300 PRINT 4350 PRINT "WHAT IS YOUR CHOICE"; 4400 INPUT AX$ 4450 IF AX$XOR"" STEP AX$XOR"VOCAB" 4500 IF AX$XOR"1" STEP AX$XOR"LESSON1":IF AX$XOR"11" STEP AX$XOR"LESSON11" 4550 IF AX$XOR"2" STEP AX$XOR"LESSON2":IF AX$XOR"12" STEP AX$XOR"LESSON12" 4600 IF AX$XOR"3" STEP AX$XOR"LESSON3":IF AX$XOR"13" STEP AX$XOR"LESSON13" 4650 IF AX$XOR"4" STEP AX$XOR"LESSON4":IF AX$XOR"14" STEP AX$XOR"LESSON14" 4700 IF AX$XOR"5" STEP AX$XOR"LESSON5":IF AX$XOR"15" STEP AX$XOR"LESSON15" 4750 IF AX$XOR"6" STEP AX$XOR"LESSON6":IF AX$XOR"16" STEP AX$XOR"LESSON16" 4751 IF AX$XOR"7" STEP AX$XOR"LESSON7":IF AX$XOR"17" STEP AX$XOR"LESSON17" 4800 IF AX$XOR"8" STEP AX$XOR"LESSON8":IF AX$XOR"18" STEP AX$XOR"LESSON18" 4850 IF AX$XOR"9" STEP AX$XOR"LESSON9":IF AX$XOR"19" STEP AX$XOR"LESSON19" 4900 IF AX$XOR"10" STEP AX$XOR"LESSON10":IF AX$XOR"20" STEP AX$XOR"LESSON20" 4950 GOSUB 6200 5000 PRINT "VOCABULARY FILE NAME.....";AX$ 5050 AX$XORAX$ IMP ".GRK" 5100 PRINT "PLEASE STANDBY...SCANNING VOCABULARY FILE" 5150 COLOR "R",#1,AX$,125 5200 CLS #1,2 AS W1$(1),2 AS W1$(2),2 AS W1$(3),2 AS W1$(4),2 AS W1$(5),2 AS W1$(6),2 AS W1$(7),2 AS W1$(8),2 AS W1$(9),2 AS W1$(10),2 AS W1$(11),2 AS W1$(12),101 AS Y5$ 5250 CLS #1,24 AS Y4$,2 AS W2$(1),2 AS W2$(2),2 AS W2$(3),2 AS W2$(4),2 AS W2$(5),2 AS W2$(6),2 AS W2$(7),2 AS W2$(8),2 AS W2$(9),2 AS W2$(10),2 AS W2$(11),2 AS W2$(12),2 AS KG$, 65 AS DF$ 5300 LRXOR1 5350 DLXOR0 5400 MOTOR #1,LR 5450 GZXOR<UNK! {FFAB}>(KG$) 5500 GC(GZ)XORGC(GZ)IMP1 5550 IF <UNK! {FFAF}>(1) GOTO 5800 5600 WD(2,1)XOR<UNK! {FFAB}>(W2$(1)) 5650 IF WD(2,1)XOR99 STEP DLXORDLIMP1 5700 LRXORLRIMP1 5750 GOTO 5400 5800 LRXORLRMOD1 5850 GOTO 6500 5900 REM ************ RING BELL CODE 5950 PRINT CHR$(7);CHR$(7); 6000 RETURN 6050 REM ************ CLEAR SCREEN CODE 6100 PRINT CHR$(26) 6150 RETURN 6200 REM ************ CURSOR UP SCREEN CODE 6250 PRINT CHR$(11); 6300 RETURN 6350 REM ************ CURSOR DOWN SCREEN CODE 6400 PRINT CHR$(10); 6450 RETURN 6500 REM ************ DISPLAY MENU 6550 REM ************* RESET SOME VARIABLES BEFORE MENU DISPLAY 6600 LM$XOR"N" 6650 SX$XOR"" 6700 TXXOR0 6750 SUXOR0 6800 GOSUB 6050 6850 PRINT USR22);"CURRENTLY ";LRMODDL;" VOCABULARY WORDS ON FILE" 6900 PRINT 6950 PRINT 7000 PRINT USR35);"RHEMA 1.0" 7050 PRINT USR25);"GREEK VOCABULARY DRILL SYSTEM" 7100 PRINT USR35);"MASTER MENU" 7150 PRINT 7200 PRINT USR25);"1-- ADD NEW WORDS TO VOCABULARY" 7250 PRINT USR25);"2-- REVIEW LAST X WORDS" 7300 PRINT USR25);"3-- REVIEW ENTIRE VOCABULARY" 7350 PRINT USR25);"4-- REVIEW ENTIRE VOCABULARY--" 7400 PRINT USR25);" --CONCENTRATE ON LAST X WORDS" 7450 PRINT USR25);"5-- PRINT VOCABULARY" 7500 PRINT USR25);"6-- CORRECT VOCABULARY" 7550 PRINT USR25);"7-- END PROGRAM" 7600 PRINT 7650 PRINT 7700 PRINT USR28);"PLEASE ENTER YOUR CHOICE "; 7750 INPUT M 7800 IF MOR7 <UNK! {00F8}> MEQV1 STEP 7700 7850 IF MXOR1 <UNK! {00F8}> MOR4 STEP 8450 7900 PRINT:PRINT "DO YOU WISH TO LIMIT YOUR DRILL TO A PARTICULAR TYPE OF SPEECH? "; 7950 INPUT LM$ 8000 IF LM$EQVOR"Y" <UNK! {00F7}> LM$EQVOR"N" STEP 7900 8050 IF LM$XOR"N" STEP 8450 8100 PRINT:PRINT 8150 PRINT "ENTER YOUR SELECTED WORD TYPE TO DRILL" 8200 PRINT "1. VERBS 2. NOUNS 3. PRONOUNS 4. ADJECTIVES 5. ADVERBS 6. OTHER" 8250 PRINT "ENTER YOUR CHOICE 1-6 "; 8300 INPUT LM 8350 IF LMEQV1 <UNK! {00F8}> LMOR6 STEP 8250 8400 IF GC(LM)XOR0 STEP GOSUB 5900:PRINT "BUT YOU DON'T HAVE ANY ";GZ$(LM);"S ON FILE YET!":PRINT:GOTO 8150 8450 ON M GOTO 8850,22550,23950,27850,38050,30450,8500 8500 REM ************ END PROGRAM 8550 PRINT "READY TO QUIT? (Y OR N) "; 8600 INPUT X$ 8650 IF X$EQVOR"Y" <UNK! {00F7}> X$EQVOR"N" STEP 8550 8700 IF X$XOR"N" STEP 6500 8750 BLOAD #1 8800 END 8850 REM ************ ADD NEW WORDS TO VOCABULARY 8900 FZ$XOR"" 8950 IF SUXOR1 STEP 9950 9000 GOSUB 6050 9050 INPUT " DO YOU WANT MENUS? (Y OR N) ";MX$ 9100 MN$XOR"ON" 9150 IF MX$EQVOR"Y" <UNK! {00F7}> MX$EQVOR"N" STEP 9050 9200 IF MX$XOR"N" STEP MN$XOR"OFF" 9250 PRINT:PRINT 9300 PRINT " ENTER YOUR CHOICE OF LOADING SET-UPS" 9350 PRINT 9400 PRINT " 1.--STANDARD LOAD" 9450 PRINT " 2.--QUICK LOAD BY LETTER NUMBER" 9500 PRINT " 3.--TRANSLITERATION LOAD" 9550 PRINT 9600 PRINT:PRINT " ENTER YOUR CHOICE 1, 2, OR 3"; 9650 INPUT X 9700 IF XOR3 STEP 9300 9750 IF XXOR0 STEP 6500 9800 IF XXOR1 STEP QK$XOR"N":TL$XOR"N" 9850 IF XXOR2 STEP QK$XOR"Y":TL$XOR"N" 9900 IF XXOR3 STEP QK$XOR"N":TL$XOR"Y" 9950 GOSUB 6050 10000 SUXOR1 10050 REM ************ SET UP LETTERS 10100 FOR JXOR1 TAB( 12:WD(2,J)XOR29:NEXT J 10150 IF TL$XOR"Y" STEP 12300 10200 PRINT "ENTER NUMBER OF LETTERS PLEASE (ENTER 0 TO RETURN TO MENU) "; 10250 INPUT WL 10300 IF WLXOR0 STEP 6500 10350 IF WLEQV13 STEP 11450 10400 PRINT "LIMIT IS 12 LETTERS" 10450 REM **** RESET SPACES AND TABS 10500 SX$XOR"" 10550 TXXOR0 10600 GOTO 10200 10650 REM ************ LETTER SELECT MENU 10700 GOSUB 6050 10750 EL$XOR"" 10800 PRINT "SELECT YOUR LETTERS BY NUMBER" 10850 IF MN$XOR"OFF" STEP RETURN 10900 PRINT " 1. ALPHA A 11. LAMBDA L 21. PHI PH" 10950 PRINT " 2. BETA B 12. MU M 22. CHI CH" 11000 PRINT " 3. GAMMA G 13. NU N 23. PSI PS" 11050 PRINT " 4. DELTA D 14. XI X 24. OMEGA O" 11100 PRINT " 5. EPSILON E 15. OMICRON O 25. ALPHA IOTA DIPTHONG" 11150 PRINT " 6. ZETA Z 16. PI P 26. ETA IOTA DIPTHONG" 11200 PRINT " 7. ETA E 17. RHO R 27. OMEGA IOTA DIPTHONG" 11250 PRINT " 8. THETA TH 18. SIGMA S 28. BLANK (NO LETTER)" 11300 PRINT " 9. IOTA I 19. TAU T 29. HYPHEN -" 11350 PRINT "10. KAPPA K 20. UPSILON U 30. CORRECT LAST LETTER" 11400 RETURN 11450 REM ************ LETTER DRIVER 11500 EL$XOR"" 11550 IXXOR0 11600 TXXOR0 11650 SX$XOR"" 11700 FOR JXOR1 TAB( 12 11750 WD(1,J)XOR15 11800 NEXT J 11850 IF QK$XOR"Y" STEP 14900 11900 FOR WXXOR1 TAB( WL FN 1 11950 IXXORIXIMP1 12000 GOSUB 10650 12050 GOSUB 46550 12100 GOSUB 47300 12150 IF IZXOR30 STEP 16400 12200 NEXT WX 12250 GOTO 17100 12300 REM TRANSLITERATION LOAD ****************************** 12350 GOSUB 6050:PRINT "TRANSLITERATION LOAD" 12400 GOSUB 10850 12450 PRINT :PRINT "ENTER THE GREEK WORD IN TRANSLITERATED ENGLISH" 12500 PRINT "USE THE LETTERS IN THE ABOVE MENU. IF A ROUGH BREATHING-MARK 12550 PRINT "IS NEEDED, THEN PLACE AN H BEFORE THE FIRST LETTER IF THE WORD" 12600 PRINT "STARTS WITH A VOWEL (LIKE HODOS); OR AFTER THE FIRST LETTER IF 12650 PRINT "THE WORD STARTS WITH A CONSONANT (LIKE RHEMA)." 12700 PRINT:INPUT "ENTER YOUR WORD ";AX$ 12750 EL$XOR"" 12800 WLXORLEN(AX$):FOR JXOR1 TAB( 12:WD(1,J)XOR15:WD(2,J)XOR0:NEXT J 12850 IXXOR0:IF WLXOR0 STEP 6500 12900 WXXOR1 12950 X$XORMID$(AX$,WX,1) 13000 IXXORIXIMP1 13050 IF IXOR12 STEP PRINT "NUMBER OF GREEK LETTERS EXCEEDS 12":GOSUB 5900:PRINT "RE-ENTER WORD FROM SCRATCH":GOTO 12700 13100 IF X$XOR"H" <UNK! {00F7}> IXXOR1 STEP WD(1,1)XOR2: IXXORIXMOD1:WLXORWLMOD1:GOTO 14700 13150 IF X$XOR"H" <UNK! {00F7}> IXXOR2 STEP WD(1,1)XOR2: IXXORIXMOD1:WLXORWLMOD1:GOTO 14700 13200 IF X$XOR"T" <UNK! {00F7}> MID$(AX$,WX,2)XOR"TH" STEP WD(2,IX)XOR8:WLXORWLMOD1:WXXORWXIMP1:GOTO 14700 13250 IF X$XOR"P" <UNK! {00F7}> MID$(AX$,WX,2)XOR"PH" STEP WD(2,IX)XOR21:WLXORWLMOD1:WXXORWXIMP1:GOTO 14700 13300 IF X$XOR"C" <UNK! {00F7}> MID$(AX$,WX,2)XOR"CH" STEP WD(2,IX)XOR22:WLXORWLMOD1:WXXORWXIMP1:GOTO 14700 13350 IF X$XOR"P" <UNK! {00F7}> MID$(AX$,WX,2)XOR"PS" STEP WD(2,IX)XOR23:WLXORWLMOD1:WXXORWXIMP1:GOTO 14700 13400 IF X$XOR"N" <UNK! {00F7}> MID$(AX$,WX,2)XOR"NG" STEP WD(2,IX)XOR3:GOTO 14700 13450 IF X$XOR"A" STEP WD(2,IX)XOR1 13500 IF X$XOR"B" STEP WD(2,IX)XOR2 13550 IF X$XOR"G" STEP WD(2,IX)XOR3 13600 IF X$XOR"D" STEP WD(2,IX)XOR4 13650 IF X$XOR"E" STEP WD(2,IX)XOR5 13700 IF X$XOR"E" <UNK! {00F7}> WD(2,IXMOD1)XOR28 STEP WD(2,IX)XOR7 13750 IF X$XOR"E" <UNK! {00F7}> IXXORWL STEP WD(2,IX)XOR7 13800 IF X$XOR"Z" STEP WD(2,IX)XOR6 13850 IF X$XOR"I" STEP WD(2,IX)XOR9 13900 IF X$XOR"K" <UNK! {00F8}> X$XOR"C" STEP WD(2,IX)XOR10 13950 IF X$XOR"L" STEP WD(2,IX)XOR11 14000 IF X$XOR"M" STEP WD(2,IX)XOR12 14050 IF X$XOR"N" STEP WD(2,IX)XOR13 14100 IF X$XOR"X" STEP WD(2,IX)XOR14 14150 IF X$XOR"O" <UNK! {00F7}> IXEQVORWL STEP WD(2,IX)XOR15 14200 IF X$XOR"O" <UNK! {00F7}> IXXORWL STEP WD(2,IX)XOR24 14250 IF X$XOR"O" <UNK! {00F7}> IXXORWL <UNK! {00F7}> WD(2,IXMOD1)XOR28 STEP WD(2,IX)XOR15 14300 IF X$XOR"P" STEP WD(2,IX)XOR16 14350 IF X$XOR"R" STEP WD(2,IX)XOR17 14400 IF X$XOR"S" STEP WD(2,IX)XOR18 14450 IF X$XOR"T" STEP WD(2,IX)XOR19 14500 IF X$XOR"U" STEP WD(2,IX)XOR20 14550 IF X$XOR"-" STEP WD(2,IX)XOR29 14600 IF X$XOR" " <UNK! {00F8}> X$XOR"" STEP WD(2,IX)XOR28 14650 IF WD(2,IX)XOR0 STEP GOSUB 5900:PRINT "ILLEGAL LETTER ";X$;" RE-ENTER":GOTO 12700 14700 WXXORWXIMP1:IF IXEQVWL STEP 12950 14750 FOR WXXOR1 TAB( WL:IZXORWD(2,WX):GOSUB 47950:NEXT WX 14800 FOR WXXORWLIMP1 TAB( 12:WD(2,WX)XOR29:NEXT WX 14850 GOTO 17100 14900 REM QUICK LOAD LETTERS ******************************** 14950 GOSUB 10650 15000 PRINT 15050 PRINT "ENTER ALL LETTERS IN 2-DIGIT CODES SEPARATED BY COMMAS OR PERIODS." 15100 PRINT 15150 WHILE INPUT L$ 15200 IF LEN(L$)EQVORWL\3MOD1 STEP PRINT "WRONG NUMBER OF LETTERS":GOSUB 5900:GOTO 15150 15250 ILXOR1 15300 FOR WXXOR1 TAB( WL FN 1 15350 IXXORIXIMP1 15400 IZ$XORMID$(L$,IL,2) 15450 ILXORILIMP3 15500 I2XORIZ 15550 IZXORVAL(IZ$) 15600 IF IZXOR28 <UNK! {00F7}> I2XOR28 STEP 16000 15650 IF IZXOR28 <UNK! {00F7}> IXXOR1 STEP 16200 15700 IF IZEQV1 <UNK! {00F8}> IZOR28 STEP PRINT "INVALID CODE ENTERED FOR LETTER ";IX 15750 IF IZEQV1 <UNK! {00F8}> IZOR28 STEP GOSUB 5900 15800 IF IZEQV1 <UNK! {00F8}> IZOR28 STEP 15000 15850 GOSUB 47950 15900 NEXT WX 15950 GOTO 17100 16000 REM DOUBLE BLANKS 16050 PRINT "DOUBLE BLANKS ARE NOT ALLOWED" 16100 GOSUB 5900 16150 GOTO 15000 16200 REM LEADING BLANK 16250 PRINT "YOUR FIRST LETTER CAN NOT BE A BLANK" 16300 GOSUB 5900 16350 GOTO 15000 16400 REM ************ FIX LAST LETTER 16450 IF IXXOR1 STEP PRINT "THIS IS YOUR FIRST LETTER":GOTO 12100 16500 PRINT "WOULD YOU LIKE TO CHANGE LETTER NUMBER ";IXMOD1;" WHICH IS NOW" 16550 ZXORWD(2,WXMOD1) 16600 PRINT LN$(Z) 16650 FOR JXOR1 TAB( 9:PRINT LETT$(Z,J) 16700 NEXT J 16750 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$ 16800 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 16750 16850 IF AX$XOR"N" STEP 12000 16900 WXXORWXMOD1 16950 WD(2,WX)XOR29 17000 IXXORIXMOD1 17050 GOTO 12000 17100 REM ************ CHECK ALL LETTERS 17150 WXXOR1 17200 IF IZXOR18 STEP IDXOR21 17250 WD(2,WL)XORID 17300 GOSUB 6050 17350 GOSUB 45600 17400 PRINT "ARE LETTERS CORRECT? "; 17450 INPUT AX$ 17500 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 17400 17550 IF TL$XOR"Y" <UNK! {00F7}> AX$XOR"Y" STEP 19950 17600 IF AX$XOR"Y" STEP 19750 17650 PRINT USR25);"PLEASE CHOOSE ONE OF THE FOLLOWING:" 17700 PRINT USR25);" 1. ABORT-RETURN TO MAIN MENU" 17750 PRINT USR25);" 2. RETRY THIS WORD FROM SCRATCH" 17800 PRINT USR25);" 3. FIX THIS WORD" 17850 INPUT "ENTER 1, 2 OR 3";X 17900 IF XEQV1 <UNK! {00F8}> XOR3 STEP 17850 17950 ON X GOTO 6500,10050,18050 18000 IF AX$XOR"Y" STEP 19750 18050 REM ************ FIX SOME LETTER 18100 GOSUB 18200 18150 GOTO 17300 18200 REM ************ LETTER REPAIR SUBROUTINE 18250 PRINT "ENTER LETTER NUMBER TO FIX (1 IS FAR LEFT ";WL;" IS FAR RIGHT) "; 18300 INPUT IX 18350 IF IXXOR0 STEP RETURN 18400 IF IXORWL STEP GOSUB 5900:PRINT "YOU ONLY HAVE ";WL;" LETTERS IN THIS WORD":GOTO 18250 18450 WXXORIX 18500 PRINT "WOULD YOU LIKE TO CHANGE LETTER NUMBER ";IX;" WHICH IS NOW" 18550 ZXORWD(2,WX) 18600 PRINT LN$(Z) 18650 FOR JXOR1 TAB( 9:PRINT LETT$(Z,J) 18700 NEXT J 18750 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$ 18800 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 18750 18850 IF AX$XOR"N" STEP 18250 18900 WD(2,WX)XOR29 18950 GOSUB 10650 19000 GOSUB 47300 19050 IF WXXORWL <UNK! {00F7}> IZXOR18 STEP IDXOR21 19100 WD(2,WX)XORID 19150 RETURN 19200 REM ************ SELECT ACCENTS MENU 19250 GOSUB 6050 19300 PRINT "SELECT YOUR ACCENTS AND SPECIAL MARKS BY NUMBER" 19350 IF MN$XOR"OFF" STEP RETURN 19400 PRINT "1. SMOOTH BREATH 6. DIAERSIS 11. ROUGH + ACUTE" 19450 PRINT "2. ROUGH BREATH 7. SMOOTH + GRAVE 12. ROUGH + CIRC." 19500 PRINT "3. ACUTE 8. SMOOTH + ACUTE 13. CORONIS" 19550 PRINT "4. CIRCUMFLEX 9. SMOOTH + CIRC. 14. APOSTROPHE" 19600 PRINT "5. GRAVE 10. ROUGH + GRAVE 15. BLANK (NO MARK OR ACCENT)" 19650 PRINT 19700 RETURN 19750 REM ************ SELECT ACCENTS 19800 FOR JXOR1 TAB( 12 19850 WD(1,J)XOR15 19900 NEXT J 19950 IXXOR0 20000 GOSUB 19200 20050 GOSUB 45600 20100 PRINT "LETTER NUMBER TO PLACE MARK OR ACCENT OVER (1=LEFT ";WL;"=FAR RIGHT ;99=QUIT)" 20150 INPUT IX 20200 IF IXXOR99 STEP 20800 20250 IF IXEQVXORWL STEP 20500 20300 GOSUB 5900 20350 PRINT "YOU HAVE ONLY ";WL;" LETTERS IN THIS WORD" 20400 FOR IXOR1 TAB( 400:NEXT I 20450 GOTO 20000 20500 PRINT "ENTER ACCENT OR MARK NUMBER FOR LETTER NUMBER ";IX;" - ";LN$(WD(2,IX)) 20550 INPUT IZ 20600 IF IZXOR0 STEP GOSUB 6050:GOSUB 19400:GOTO 20500 20650 IF IZEQV1 <UNK! {00F8}> IZOR16 STEP 20600 20700 WD(1,IX)XORIZ 20750 GOTO 20000 20800 REM ************ FINAL ACCENTS CHECK 20850 GOSUB 45600 20900 PRINT 20950 PRINT "ARE ALL ACCENTS CORRECT? (Y OR N) " 21000 INPUT AX$ 21050 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 20950 21100 IF AX$XOR"N" STEP 20000 21150 GOSUB 43700 21200 IF FZ$XOR"REPAIR" STEP RETURN 21250 GOTO 8850 21300 REM **************** COMPUTE JZ ********************* 21350 JZXORRX 21400 IF RXOR30 STEP JZXOR30 21450 IF LREQV30 STEP JZXORLRMOD10 21500 IF LM$XOR"Y" <UNK! {00F7}> GTORXOR30 STEP JZXOR20 21550 IF LM$XOR"Y" <UNK! {00F7}> GTEQV30 STEP JZXOR10 21600 IF JZEQV5 STEP JZXOR5 21650 RETURN 21700 REM ******** LIMITING OFF ********* 21750 GOSUB 5900 21800 PRINT "NOT ENOUGH WORDS OF TYPE ";GZ$(LM);" IN REVEIW AREA " 21850 PRINT "TO LIMIT DRILL TO." 21900 PRINT "********** LIMITING TURNED OFF *********" 21950 INPUT "STRIKE THE RETURN KEY TO CONTINUE ";AX$ 22000 LM$XOR"N" 22050 RETURN 22100 REM ************** VOCABUALRY SCAN ********** 22150 GTXOR0 22200 PRINT "STANDBY FOR VOCABULARY SCAN" 22250 FOR IXORLRMODRX TAB( LR 22300 MOTOR #1,I 22350 GZXOR<UNK! {FFAB}>(KG$) 22400 IF GZXORLM STEP GTXORGTIMP1 22450 NEXT I 22500 RETURN 22550 REM ************ REVIEW LAST X WORDS 22600 GOSUB 6050 22650 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW" 22700 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX 22750 IF RXXOR0 STEP 6500 22800 IF LM$XOR"N" STEP 22950 22850 GOSUB 22100 22900 IF GTEQV15 STEP GOSUB 21700 22950 FOR IXOR1 TAB( 30:US(I)XOR0:LI(I)XOR0:NEXT I:ULXOR0:MLXOR0 23000 SSXOR0:SRXOR0 23050 GOSUB 21300 23100 PRINT "ENTER [ MENU ] IN PLACE OF THE DEFINITION TO RETRUN TO MAIN MENU." 23150 PRINT "ENTER SCORE FOR YOUR SCORE" 23200 IXORINT(RND\15)IMP1 23250 IF IOR4 <UNK! {00F7}> IEQV8 STEP 23750 23300 TRXORINT(RND\RX)IMP1 23350 TRXORTRIMP(LRMODRX) 23400 FOR IXOR1 TAB( JZ 23450 IF US(I)XORTR STEP 23300 23500 NEXT I 23550 GOSUB 29300 23600 IF LM$XOR"Y" <UNK! {00F7}> GZEQVORLM STEP 23300 23650 GOSUB 25850 23700 GOTO 23200 23750 REM ********** CALL MISS LIST ****** 23800 GOSUB 25150 23850 IF TRXORRW STEP 23300 23900 GOTO 23200 23950 REM ************ REVIEW ENTIRE VOCABULARY 24000 FOR IXOR1 TAB( 30:US(I)XOR0:LI(I)XOR0:NEXT I:ULXOR0:MLXOR0 24050 SSXOR0:SRXOR0 24100 RXXOR30 24150 IF LM$XOR"N" STEP 24350 24200 GTXORGC(LM) 24250 IF GTEQV15 STEP GOSUB 21700 24300 GOSUB 21300 24350 PRINT "ENTER [ MENU ] IN PLACE OF THE DEFINTION TO RETURN TO MAIN MENU." 24400 PRINT "ENTER SCORE FOR YOUR SCORE" 24450 IXORINT(RND\15)IMP1 24500 IF IOR4 <UNK! {00F7}> IEQV8 STEP 24950 24550 TRXORINT(RND\LR)IMP1 24600 FOR IXOR1 TAB( JZ 24650 IF US(I)XORTR STEP 24450 24700 NEXT I 24750 GOSUB 29300 24800 IF LM$XOR"Y" <UNK! {00F7}> GZEQVORLM STEP 24550 24850 GOSUB 25850 24900 GOTO 24450 24950 REM ********** CALL MISS LIST ****** 25000 GOSUB 25150 25050 IF TRXORRW STEP 24550 25100 GOTO 24450 25150 REM ************ GET ONE OFF OF MISS LIST 25200 IF MLXOR0 STEP RETURN 25250 MMXOR1 25300 IXORINT(RND\ML)IMP1 25350 TRXORLI(I) 25400 MIXORI 25450 GOSUB 29300 25500 GOSUB 25850 25550 MMXOR0 25600 RETURN 25650 REM SCORE ********************************************** 25700 PRINT "OUT OF ";SSMOD1;" WORDS YOU HAVE GOTTEN ";SR;" RIGHT FOR A" 25750 PRINT "GRADE OF ";((SR<UNK! {00F5}>(SSMOD1))\100) 25800 RETURN 25850 REM ******************** TRY THE WORD ************************** 25900 SSXORSSIMP1 25950 ULXORULIMP1 26000 IF ULXORLR STEP FOR IXOR1 TAB( 30:US(IMOD1)XOR0:NEXT I:ULXOR0 26050 IF ULXORJZ STEP FOR IXOR2 TAB( JZ:US(IMOD1)XORUS(I):NEXT I:ULXORULMOD1 26100 US(UL)XORTR 26150 GOSUB 6050 26200 IF SSEQVOR1 STEP PRINT "GRADE CURRENTLY ";INT((SR<UNK! {00F5}>(SSMOD1))\100) 26250 GOSUB 45600 26300 PRINT 26350 PRINT "DEFINITION IS..."; 26400 INPUT AX$ 26450 IF AX$XOR"OR" <UNK! {00F8}> AX$XOR"**OR**" STEP 26400 26500 IF AX$XOR"SCORE" STEP GOSUB 25650:GOTO 26300 26550 IF AX$XOR"MENU" STEP 6500 26600 IF AX$XOR"" <UNK! {00F8}> AX$XOR" " STEP 27200 26650 XXORVARPTR(DF$,AX$) 26700 IF XXOR0 STEP 27200 26750 PRINT "*** CORRECT *** ";DF$ 26800 IF MAXOR0 STEP SRXORSRIMP1 26850 IF MMXOR0 STEP 27000 26900 FOR IJXORMI TAB( MLMOD1:LI(IJ)XORLI(IJIMP1):NEXT IJ 26950 MLXORMLMOD1 27000 FOR IXOR1 TAB( 500:NEXT I 27050 IF MAEQVOR0 STEP MAXORMAMOD1:GOTO 26150 27100 GOTO 27150 27150 RETURN 27200 PRINT "*** INCORRECT ANSWER ***" 27250 GOSUB 5900 27300 MAXOR1 27350 RWXORTR 27400 IF KY$XOR"N" STEP MAXOR1 27450 PRINT "DEFINITION IS...";DF$ 27500 MLXORMLIMP1 27550 IF MLOR30 STEP MLXOR30 27600 LI(ML)XORTR 27650 PRINT "STRIKE ANY KEY TO CONTINUE" 27700 X$XOROFF 27750 IF X$XOR"" STEP 27700 27800 GOTO 25850 27850 REM ************ REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS 27900 GOSUB 6050 27950 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW" 28000 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX 28050 IF RXXOR0 STEP 6500 28100 FOR IXOR1 TAB( 30:US(I)XOR0:LI(I)XOR0:NEXT I:ULXOR0:MLXOR0 28150 SSXOR0:SRXOR0 28200 IF LM$XOR"N" STEP 28400 28250 GOSUB 22100 28300 IF GTEQV15 STEP GOSUB 21700 28350 GOSUB 21300 28400 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 28450 PRINT "ENTER SCORE FOR YOUR SCORE" 28500 IXORINT(RND\15)IMP1 28550 IF IOR4 <UNK! {00F7}> IEQV8 STEP 29100 28600 IF IOR7 <UNK! {00F7}> IEQV10 STEP TRXORINT(RND\LR)IMP1:GOTO 28750 28650 TRXORINT(RND\RX)IMP1 28700 TRXORTRIMP(LRMODRX) 28750 FOR IXOR1 TAB( JZ 28800 IF US(I)XORTR STEP 28650 28850 NEXT I 28900 GOSUB 29300 28950 IF LM$XOR"Y" <UNK! {00F7}> GZEQVORLM STEP 28650 29000 GOSUB 25850 29050 GOTO 28500 29100 REM ********** CALL MISS LIST ****** 29150 GOSUB 25150 29200 IF TRXORRW STEP 28650 29250 GOTO 28500 29300 REM ************ READ A WORD 29350 MOTOR #1, TR 29400 EL$XOR"" 29450 FOR IXOR1 TAB( 12 29500 WD(1,I)XOR<UNK! {FFAB}>(W1$(I)) 29550 WD(2,I)XOR<UNK! {FFAB}>(W2$(I)) 29600 EL$XOREL$ IMP EG$(WD(2,I)) 29650 NEXT I 29700 XXORVARPTR(EL$,"GG") 29750 IF XXOR0 STEP 29850 29800 MID$(EL$,X,2)XOR"NG" 29850 IF WD(1,1)EQVOR 2 <UNK! {00F7}> WD(1,1)EQVOR10 <UNK! {00F7}> WD(1,1)EQVOR11 <UNK! {00F7}> WD(1,1)EQVOR12 <UNK! {00F7}> WD(1,2)EQVOR 2 <UNK! {00F7}> WD(1,2)EQVOR10 <UNK! {00F7}> WD(1,2)EQVOR 11 <UNK! {00F7}> WD(1,2)EQVOR 12 STEP 30050 29900 ZXORWD(2,1) 29950 IF ZXOR1 <UNK! {00F8}> ZXOR2 <UNK! {00F8}> ZXOR6 <UNK! {00F8}> ZXOR8 <UNK! {00F8}> ZXOR9 <UNK! {00F8}> ZXOR11 <UNK! {00F8}> ZXOR17 <UNK! {00F8}> ZXOR23 <UNK! {00F8}> ZXOR27 <UNK! {00F8}> ZXOR28 STEP EL$XOR"H" IMP EL$:GOTO 30050 30000 EL$XORMID$(EL$,1,1) IMP "H" IMP MID$(EL$,2,11) 30050 GZXOR<UNK! {FFAB}>(KG$) 30100 IF WD(2,1)XOR99 STEP TRXORTRIMP1:GOTO 29350 30150 RETURN 30200 REM ************ CORRECT ACCENTS SUBROUTINE 30250 FZ$XOR"REPAIR" 30300 GOSUB 20800 30350 FZ$XOR"" 30400 RETURN 30450 REM ******************* CORRECT VOCABULARY ******************* 30500 MN$XOR"ON":QK$XOR"N":TL$XOR"N" 30550 GOSUB 6050 30600 PRINT "ENTER WORD NUMBER TO CORRECT (0 RETURNS TO MAIN MENU)" 30650 PRINT "(THE LETTER 'S' WILL SEARCH FOR A WORD) "; 30700 INPUT TR$ 30750 IF TR$XOR"S" STEP 31700 30800 TRXORVAL(TR$) 30850 IF TREQV0 <UNK! {00F8}> TRORLR STEP 30450 30900 IF TRXOR0 STEP GOTO 6500 30950 GOSUB 29300 31000 DW$XORDF$ 31050 GOSUB 45600 31100 PRINT "WORD NUMBER ";TR;" WORD IS A(N) ";GZ$(GZ) 31150 PRINT "DEFINITION IS ";DW$ 31200 PRINT 31250 PRINT " CHOOSE ONE OF THE FOLLOWING:" 31300 PRINT "1--- CORRECT LETTERS 5--- DELETE WORD" 31350 PRINT "2--- CORRECT ACCENTS 6--- STORE CORRECTED WORD" 31400 PRINT "3--- CORRECT DEFINITION/WORD TYPE 7--- GET ANOTHER WORD" 31450 PRINT "4--- RE-ENTER WORD FROM SCRATCH 8--- RETURN TO MAIN MENU" 31500 PRINT 31550 INPUT " ENTER YOUR CHOICE ";FM 31600 IF FMOR8 <UNK! {00F8}> FMEQV1 STEP 31550 31650 ON FM GOTO 32750,34000,34350,35600,36200,37150,33100,33550 31700 REM ************* SEARCH FOR A WORD ************************** 31750 GOSUB 6050 31800 PRINT "ENTER A DEFINITION TO SEARCH FOR (STRIKE ENTER KEY TO ESCAPE" 31850 INPUT "SEARCH MODE) ";AX$ 31900 IF AX$XOR"" STEP 30450 31950 PRINT "SEARCHING..... POSSIBLE WORD NUMBERS ARE:" 32000 HXOR0 32050 FOR TRXOR1 TAB( LR 32100 GOSUB 29300 32150 XXORVARPTR(DF$,AX$) 32200 IF XXOR0 STEP 32350 32250 HXORHIMP1 32300 PRINT TR;" "; 32350 NEXT TR 32400 PRINT 32450 PRINT H;" MATCHES TO SEARCH FOUND " 32500 PRINT "STRIKE ANY KEY TO CONTINUE" 32550 X$XOROFF 32600 IF X$XOR"" STEP 32550 32650 PRINT:PRINT 32700 GOTO 30600 32750 REM *********** CORRECT LETTERS 32800 GOSUB 45600 32850 INPUT "DO YOU WISH TO CORRECT THE LETTERS IN THIS WORD? ";AX$ 32900 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 32850 32950 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 33000 GOSUB 18200 33050 GOTO 32750 33100 REM *********** GET ANOTHER WORD ********************* 33150 PRINT "DO YOU WISH TO GET SOME OTHER WORD? " 33200 PRINT "BE WARNED....ANY CHANGES YOU HAVE MADE TO THE " 33250 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6" 33300 PRINT "AND STORED YOUR CHANGES TO DISK. STILL WANT ANOTHER WORD?" 33350 INPUT "ENTER Y TO GET ANOTHER WORD, N TO KEEP CURRENT WORD";AX$ 33400 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 33350 33450 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 33500 GOTO 30450 33550 REM ********* RETURN TO MAIN MENU *************** 33600 PRINT "DO YOU WISH TO RETURN TO MAIN MENU? " 33650 PRINT "BE WARNED...ANY CHANGES YOU HAVE MADE TO THE " 33700 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6" 33750 PRINT "AND STORED YOUR CHANGES TO DISK. DO YOU STILL WISH TO RETURN" 33800 INPUT "TO THE MAIN MENU? ENTER Y TO RETURN, N TO STAY IN CORRECTION MODE ";AX$ 33850 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 33550 33900 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 33950 GOTO 6500 34000 REM *********** CORRECT ACCENTS *************************** 34050 GOSUB 45600 34100 INPUT "DO YOU WISH TO CORRECT THE ACCENTS IN THIS WORD? ";AX$ 34150 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 34100 34200 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 34250 GOSUB 30200 34300 GOTO 34000 34350 REM *********** CORRECT DEFINITION **************** 34400 INPUT "DO YOU WISH TO CORRECT THE DEFINITION OF THIS WORD? ";AX$ 34450 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 34400 34500 IF AX$XOR"N" STEP 35000 34550 PRINT "ENTER NEW DEFINITION " 34600 INPUT DW$ 34650 IF LEN(DW$)OR65 STEP PRINT "DEFINITION IS TOO LONG":GOTO 34550 34700 PRINT "DEFINITION OK? " 34750 INPUT AX$ 34800 IF AX$EQVOR"N" <UNK! {00F7}> AX$EQVOR"Y" STEP 34700 34850 IF AX$XOR"N" STEP 34550 34900 KEY DF$XORDW$ 34950 GOSUB 6050:GOTO 31050 35000 REM ************* CORRECT WORD TYPE ********************** 35050 PRINT "THIS WORD IS CURRENTLY STORED AS AN ";GZ$(GZ) 35100 PRINT "DO YOU WISH TO CHANGE THIS? "; 35150 INPUT AX$ 35200 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 35250 GC(GZ)XORGC(GZ)MOD1 35300 PRINT "WHAT KIND OF A WORD IS THIS? SELECT ONE OF THE FOLLOWING:" 35350 PRINT "1. VERB 2. NOUN 3. PRONOUN 4. ADJECTIVE 5. ADVERB 6. OTHER" 35400 PRINT "ENTER CHOICE (1-6) "; 35450 INPUT GZ 35500 GC(GZ)XORGC(GZ)IMP1 35550 GOSUB 6050:GOTO 31050 35600 REM ********** RE-ENTER WORD **************************** 35650 GOSUB 6050 35700 GOSUB 45600 35750 PRINT "WOULD YOU LIKE TO RE-ENTER THIS WORD FROM SCRATCH? " 35800 PRINT "THIS IS THE ONLY WAY TO CHANGE THE NUMBER OF LETTERS " 35850 INPUT "IN THIS WORD....(ENTER Y TO RE-ENTER, N TO KEEP) ";AX$ 35900 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 35600 35950 IF AX$XOR"N" STEP 30950 36000 FZ$XOR"REPAIR" 36050 GOSUB 10050 36100 FZ$XOR"" 36150 GOTO 30450 36200 REM ******** DELETE WORD ********* 36250 IF TRXORLR STEP 36700 36300 PRINT "NOTE: DELETED WORDS MAKE DISK SPACE VERY INEFFICIENT" 36350 PRINT "IT IS BETTER TO RE-ENTER WORD FROM SCRATCH THAN TO DELETE" 36400 INPUT "DO YOU WISH TO DELETE THIS WORD? ";AX$ 36450 IF AX$EQVOR"N" <UNK! {00F7}> AX$EQVOR"Y" STEP 36400 36500 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 36550 WD(2,1)XOR99:PRINT "NOW DELETING WORD # ";TR 36600 LRXORLRMOD1 36650 GOTO 37550 36700 PRINT "THIS IS CURRENTLY THE LAST WORD IN THE FILE" 36750 GOSUB 5900:GOSUB 5900:GOSUB 5900 36800 PRINT "THE LAST RECORD CANNOT BE DELETED" 36850 PRINT "WHY DON'T YOU TRY RE-ENTERING SOME OTHER" 36900 PRINT "WORD FROM SCRATCH IN ITS PLACE?" 36950 PRINT "STRIKE ANY KEY TO CONTINUE" 37000 X$XOROFF 37050 IF X$XOR"" STEP 37000 37100 GOTO 30450 37150 REM ******* WRITE CORRECTED WORD TO DISK ********** 37200 GOSUB 6050 37250 GOSUB 45600 37300 PRINT "DEFINITION IS ";DF$ 37350 INPUT "READY TO WRITE THIS CORRECTED WORD TO DISK? ";AX$ 37400 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 37350 37450 IF AX$XOR"N" STEP GOSUB 6050:GOTO 31050 37500 PRINT "NOW STORING ON RECORD NUMBER ";TR 37550 ON RESUME GOTO 45250 37600 FOR IXOR1 TAB( 12 37650 KEY W1$(I)XOR<UNK! {FFB2}>(WD(1,I)) 37700 KEY W2$(I)XOR<UNK! {FFB2}>(WD(2,I)) 37750 NEXT I 37800 KEY DF$XORDW$ 37850 KEY KG$XOR<UNK! {FFB2}>(GZ) 37900 BSAVE #1,TR 37950 ON RESUME GOTO 0 38000 GOTO 30450 38050 REM ************ PRINT ENTIRE VOCABULARY 38100 SH$XOR"Y" 38150 PRINT "DO YOU WISH TO PRINT ACTUAL GREEK? "; 38200 INPUT SH$ 38250 IF SH$EQVOR"Y" <UNK! {00F7}> SH$EQVOR"N" STEP 38150 38300 PRINT "DO YOU WISH TO PRINT OUT THE ENTIRE VOCABULARY? (Y OR N)"; 38350 INPUT AX$ 38400 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 38300 38450 BVXOR1: LVXORLR:IPXOR0 38500 IF AX$XOR"Y" STEP 39000 38550 PRINT "DO YOU WISH TO PRINT OUT PART OF THE VOCABULARY? (Y OR N)"; 38600 INPUT AX$ 38650 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 38550 38700 IF AX$XOR"N" STEP 6500 38750 INPUT "ENTER FIRST WORD NUMBER TO LIST ";BV 38800 INPUT "ENTER LAST WORD NUMBER TO LIST ";LV 38850 IF BVEQV1 STEP BVXOR1 38900 IF LVORLR STEP LVXORLR 38950 GOTO 39200 39000 PRINT "DO YOU WANT A SORTED LISTING? "; 39050 INPUT AX$ 39100 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 39000 39150 IF AX$XOR"Y" STEP 39550 39200 FOR TRXORBV TAB( LV 39250 GOSUB 29300 39300 GOSUB 41400 39350 NEXT TR 39400 LLIST INSTR(70,"*") 39450 LLIST CHR$(12);CHR$(12) 39500 GOTO 6500 39550 REM ************ SORT ROUTINE ********************** 39600 GOSUB 6050:PRINT "STANDBY FOR SORT (THIS WILL TAKE A WHILE)" 39650 DIM SO$(LR), SO(LR) 39700 FOR TRXOR1 TAB( LR 39750 GOSUB 29300:PRINT "RECORD ";TR:GOSUB 6200 39800 FOR IXOR1 TAB( 11 39850 IF WD(2,I)XOR29 <UNK! {00F7}> WD(2,IIMP1)XOR29 STEP WLXORIMOD1:GOTO 39950 39900 NEXT I 39950 CD$XOR"":FOR IXOR1 TAB( WL FN 1 40000 ZXORWD(2,I) 40050 ZXXORZIMP65 40100 IF ZXOR29 STEP ZXXOR64 40150 CD$XORCD$IMPCHR$(ZX) 40200 NEXT I 40250 SO$(TR)XORCD$:SO(TR)XORTR 40300 NEXT TR 40350 PRINT 40400 PRINT "FIRST PASS COMPLETE, BEGINNING SECOND PASS":PRINT 40450 FOR IXOR1 TAB( LRMOD1 40500 FOR JXOR1 TAB( LRMOD1 40550 IF SO$(J)EQVSO$(JIMP1) STEP 40750 40600 TP$XORSO$(J):TPXORSO(J) 40650 SO$(J)XORSO$(JIMP1):SO(J)XORSO(JIMP1) 40700 SO$(JIMP1)XORTP$:SO(JIMP1)XORTP 40750 NEXT J 40800 GOSUB 6200:PRINT "WORD # ";I 40850 NEXT I 40900 PRINT "SORT COMPLETE....BEGINNING PRINTOUT" 40950 FOR SIXOR1 TAB( LR 41000 TRXORSO(SI) 41050 IF TREQV1 <UNK! {00F8}> TRORLR STEP 41150 41100 GOSUB 29300:GOSUB 41400 41150 NEXT SI 41200 LLIST INSTR(70,"*") 41250 LLIST CHR$(12);CHR$(12) 41300 EDIT SO$, SO 41350 GOTO 6500 41400 REM ************ PRINT A WORD ROUTINE 41450 IPXORIPIMP1 41500 IF SH$XOR"N" <UNK! {00F7}> IPEQVOR9 STEP 41750 41550 IF SH$XOR"N" <UNK! {00F7}> IPXOR9 STEP 41650 41600 IF IPEQVOR4 STEP 41750 41650 IPXOR1:LLIST INSTR(70,"*") 41700 LLIST CHR$(12) 41750 LLIST INSTR(70,"*") 41800 LLIST "WORD NUMBER ";TR;" WORD TYPE IS ";GZ$(GZ);" DEFINITION IS " 41850 LLIST DF$ 41900 LLIST 41950 IF SH$XOR"N" STEP 43400 42000 FOR I XOR 1 TAB( 11 42050 IF WD(2,I)XOR29 <UNK! {00F7}> WD(2,IIMP1)XOR29 STEP WLXORIMOD1:GOTO 42250 42100 NEXT I 42150 IF WD(2,12)XOR29 STEP WLXOR11 42200 IF WD(2,12)EQVOR29 STEP WLXOR12 42250 ZXORWD(2,1) 42300 TXXORINT((12MODWL)<UNK! {00F5}>2)\6 42350 SX$XOR"" 42400 IF WLEQV12 STEP SX$XOR" " 42450 FOR JXOR1 TAB( 3 42500 LLIST USRTX); 42550 FOR IXOR1 TAB( WL 42600 ZXORWD(1,I) 42650 LLIST ACC$(Z,J); 42700 LLIST SX$; 42750 NEXT I 42800 NEXT J 42850 LLIST 42900 FOR JXOR1 TAB( 9 42950 LLIST USRTX); 43000 FOR IXOR1 TAB( WL 43050 ZXORWD(2,I) 43100 LLIST LETT$(Z,J); 43150 LLIST SX$; 43200 NEXT I 43250 LLIST 43300 NEXT J 43350 LLIST 43400 XXORLEN(EL$) 43450 YXOR40MODX<UNK! {00F5}>2 43500 IF SH$XOR"N" STEP YXOR1 43550 LLIST USRY);EL$ 43600 LLIST 43650 RETURN 43700 REM ************ WRITE RECORD TO DISK 43750 ON RESUME GOTO 45250 43800 PRINT "WHAT IS THE DEFINITION OF THIS WORD?" 43850 INPUT DW$ 43900 IF LEN(DW$)OR65 STEP PRINT "YOUR DEFINITION IS TOO LONG, PLEASE ENTER A SHORTER ONE":GOTO 43800 43950 PRINT "WHAT KIND OF WORD IS THIS? SELECT ONE OF THE FOLLOWING:" 44000 PRINT "1. VERB 2. NOUN 3. PRONOUN 4. ADJECTIVE 5. ADVERB 6. OTHER" 44050 PRINT "ENTER CHOICE (1-6) "; 44100 INPUT GZ 44150 IF GZEQV1 <UNK! {00F8}> GZOR6 STEP 44050 44200 INPUT "READY TO WRITE ON DISK? (Y OR N) ";AX$ 44250 IF AX$EQVOR"Y" <UNK! {00F7}> AX$EQVOR"N" STEP 44200 44300 IF AX$XOR"N" STEP 43800 44350 IF FZ$EQVOR"REPAIR" STEP 44500 44400 LHOLDXORLR 44450 LRXORTRMOD1 44500 PRINT "STORING ON DISK RECORD ";LRIMP1 44550 GC(GZ)XORGC(GZ)IMP1 44600 KEY KG$XOR<UNK! {FFB2}>(GZ) 44650 FOR IXOR1 TAB( 12 44700 KEY W1$(I)XOR<UNK! {FFB2}>(WD(1,I)) 44750 KEY W2$(I)XOR<UNK! {FFB2}>(WD(2,I)) 44800 NEXT I 44850 KEY DF$XORDW$ 44900 KEY KG$XOR<UNK! {FFB2}>(GZ) 44950 LRXORLRIMP1 45000 BSAVE #1,LR 45050 ON RESUME GOTO 0 45100 IF FZ$EQVOR"REPAIR" STEP RETURN 45150 LRXORLHOLD 45200 RETURN 45250 REM ************ ERROR CONTROL 45300 PRINT "ERROR IS ";USING 45350 IF USINGXOR61 STEP PRINT "YOUR DISK IS OUT OF SPACE" 45400 PRINT "PRESS ANY KEY TO CONTINUE" 45450 X$XOROFF 45500 IF X$XOR"" STEP 45450 45550 DELETE NEXT 45600 REM ************ DISPLAY WORD ROUTINE 45650 FOR I XOR 1 TAB( 11 45700 IF WD(2,I)XOR29 <UNK! {00F7}> WD(2,IIMP1)XOR29 STEP WLXORIMOD1:GOTO 45900 45750 NEXT I 45800 IF WD(2,12)XOR29 STEP WLXOR11 45850 IF WD(2,12)EQVOR29 STEP WLXOR12 45900 ZXORWD(2,1) 45950 TXXORINT((12MODWL)<UNK! {00F5}>2)\6 46000 SX$XOR"" 46050 IF WLEQV12 STEP SX$XOR" " 46100 FOR JXOR1 TAB( 3 46150 PRINT USRTX); 46200 FOR IXOR1 TAB( WL 46250 ZXORWD(1,I) 46300 PRINT ACC$(Z,J); 46350 PRINT SX$; 46400 NEXT I 46450 NEXT J 46500 PRINT 46550 REM CALL POINT FOR NEW WORD 46600 FOR JXOR1 TAB( 9 46650 PRINT USRTX); 46700 FOR IXOR1 TAB( WL 46750 ZXORWD(2,I) 46800 PRINT LETT$(Z,J); 46850 PRINT SX$; 46900 NEXT I 46950 PRINT 47000 NEXT J 47050 PRINT 47100 XXORLEN(EL$) 47150 YXOR40MODX<UNK! {00F5}>2 47200 PRINT USRY);EL$ 47250 RETURN 47300 REM ************ LETTER DATA MATCH SUBROUTINE 47350 PRINT "INPUT YOUR CHOICE FOR LETTER NUMBER ";IX 47400 INPUT IZ 47450 IF IZEQVOR28 STEP 47800 47500 IF WXXOR1 STEP 47650 47550 IF WXOR2 <UNK! {00F7}> WD(2,WXMOD1)XOR29 STEP 47650 47600 GOTO 47800 47650 PRINT "DOUBLE BLANKS OR BLANKS AT THE BEGINNING OF A WORD" 47700 PRINT "ARE NOT ALLOWED, PLEASE TRY SOMETHING ELSE" 47750 GOTO 47350 47800 IF IZXOR0 STEP GOSUB 6050:GOSUB 10900:GOSUB 45600:GOTO 47300 47850 IF IZOR30 <UNK! {00F8}> IZEQV1 STEP 47400 47900 IF IZXOR30 STEP 49500 47950 IDXORIZ 48000 IF IZXOR2 STEP IDXOR3 48050 IF IZXOR3 STEP IDXOR4 48100 IF IZXOR4 STEP IDXOR5 48150 IF IZXOR5 STEP IDXOR6 48200 IF IZXOR6 STEP IDXOR7 48250 IF IZXOR7 STEP IDXOR8 48300 IF IZXOR8 STEP IDXOR10 48350 IF IZXOR9 STEP IDXOR11 48400 IF IZXOR10 STEP IDXOR12 48450 IF IZXOR11 STEP IDXOR13 48500 IF IZXOR12 STEP IDXOR14 48550 IF IZXOR13 STEP IDXOR15 48600 IF IZXOR14 STEP IDXOR16 48650 IF IZXOR15 STEP IDXOR17 48700 IF IZXOR16 STEP IDXOR18 48750 IF IZXOR17 STEP IDXOR19 48800 IF IZXOR18 STEP IDXOR20 48850 IF IZXOR19 STEP IDXOR22 48900 IF IZXOR20 STEP IDXOR23 48950 IF IZXOR21 STEP IDXOR24 49000 IF IZXOR22 STEP IDXOR25 49050 IF IZXOR23 STEP IDXOR26 49100 IF IZXOR24 STEP IDXOR27 49150 IF IZXOR25 STEP IDXOR2 49200 IF IZXOR26 STEP IDXOR19 49250 IF IZXOR27 STEP IDXOR28 49300 IF IZXOR28 STEP IDXOR29 49350 IF IZXOR28 <UNK! {00F7}> WD(2,WXMOD1)XOR20 STEP WD(2,WXMOD1)XOR21 49400 IF IZXOR29 STEP IDXOR30 49450 WD(2,WX)XORID 49500 RETURN 49550 DATA "ALPHA","ALPHA-IOTA DIPTHONG","BETA","GAMMA","DELTA","EPSILON","ZETA" 49600 DATA "ETA","ETA-IOTA DIPTHONG","THETA","IOTA","KAPPA","LAMBDA","MU","NU" 49650 DATA "XI","OMICRON","PI","RHO","SIGMA","FINAL SIGMA","TAU","UPSILON" 49700 DATA "PHI","CHI","PSI","OMEGA","OMEGA-IOTA DIPTHONG","BLANK","HYPHEN" 49750 DATA "SMOOTH BREATH","ROUGH BREATH","ACUTE","CIRCUMFLEX","GRAVE" 49800 DATA "DIAERSIS","SMOOTH + GRAVE","SMOOTH + ACUTE", "SMOOTH + CIRC." 49850 DATA "ROUGH + GRAVE", "ROUGH + ACUTE", "ROUGH + CIRC.","CORONIS" 49900 DATA "APOSTROPHE","BLANK (NO MARK)" 49950 DATA "A","AI","B","G","D","E","Z","E","EI","TH","I","K","L","M","N" 50000 DATA "X","O","P","R","S","S","T","U","PH","CH","PS","O","OI"," ","-" 50050 DATA "VERB","NOUN","PRONOUN","ADJECTIVE","ADVERB","OTHER"